home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
basic
/
exenam.bas
< prev
next >
Wrap
BASIC Source File
|
1993-02-15
|
2KB
|
46 lines
DEFINT A-Z
'$INCLUDE: 'qb.bi'
DECLARE FUNCTION ExeName$ ()
FUNCTION ExeName$
'Returns full name of currently running program.
'(Works only under DOS 3.x)
DIM Regs AS RegType
Regs.ax = &H62 * 256 'Int 21h, function 62h
CALL INTERRUPT(&H21, Regs, Regs)
DEF SEG = Regs.bx 'Returns PSP segment in BX.
EnvPtr& = PEEK(44) + PEEK(45) * 256 'Get env segment at byte 44.
DEF SEG = EnvPtr& 'Point to env block.
Byte = 0 'Scan thru env variables
DO 'until we reach a double-null,
IF PEEK(Byte) = 0 THEN 'signifying end-of-list.
IF PEEK(Byte + 1) = 0 THEN
Byte = Byte + 2
EXIT DO
END IF
END IF
Byte = Byte + 1
LOOP
IF PEEK(Byte) = 1 THEN 'If next byte is 1, then
Byte = Byte + 2 'program name follows.
Temp$ = SPACE$(128) 'Read name into Temp$, one
StrPtr = 0 'byte at a time.
DO
IF PEEK(Byte) = 0 THEN EXIT DO
StrPtr = StrPtr + 1
MID$(Temp$, StrPtr, 1) = CHR$(PEEK(Byte))
Byte = Byte + 1
LOOP
ExeName$ = LEFT$(Temp$, StrPtr)
ELSE
ExeName$ = ""
END IF
DEF SEG
END FUNCTION